package com.cmc.cloud.cmclink.doc.vo.blnolocalchargevo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * Local Charge费用 DO
 *
 * @author 集运管理员
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BlnoLocalChargeAddReqVO {
    /**
     * 提单号
     */
    @Schema(description = "提单号")
    @NotNull(message ="BlnoLocalChargeAddReqVO.blnoId.NotNull" )
    private Long blnoId;
    /**
     * 费用代码
     */
    @Schema(description = "费用代码")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.chargeCode.NotBlank}")
    private String chargeCode;
    /**
     * 计费维度 C=按体积吨计费，N=按箱计费，Y=按票计费
     */
    @Schema(description = "计费维度 C=按体积吨计费，N=按箱计费，Y=按票计费")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.per.NotBlank}")
    private String per;
    /**
     * 箱型
     */
    @Schema(description = "箱型")
    private String cntrType;
    /**
     * 箱尺寸
     */
    @Schema(description = "箱尺寸")
    private String cntrSize;
    /**
     * 货类
     */
    @Schema(description = "货类")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.cargoType.NotBlank}")
    private String cargoType;
    /**
     * 费率
     */
    @Schema(description = "费率")
    @NotNull(message = "{BlnoLocalChargeAddReqVO.rate.NotNull}")
    private BigDecimal rate;
    /**
     * 币种
     */
    @Schema(description = "币种")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.currency.NotBlank}")
    private String currency;

    /**
     * 付费人
     */
    @Schema(description = "付费人")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.payer.NotBlank}")
    private String payer;

    /**
     * 费用发生港
     */
    @Schema(description = "费用发生港")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.localPort.NotBlank}")
    private String localPort;

    /**
     * 件数
     */
    @Schema(description = "件数")
    private Integer quantity;

    @Schema(description = "进出口",example = "进口：IM，出口：EX")
    @NotBlank(message = "{BlnoLocalChargeAddReqVO.imExType.NotBlank}")
    private String imExType;

    @Schema(description = "金额不允许为空")
    @NotNull(message = "{BlnoLocalChargeAddReqVO.amount.NotNull}")
    private BigDecimal amount;
}
